package nestedClasses;

public class OuterClass {
	innerClass in=new innerClass(); //在外部类实例化内部类对象引用
	
	public void ouf() {
		in.inf();	//在外部类方法中调用内部类方法
	}
	
	class innerClass{
		innerClass(){	//内部类的构造方法
			
		}
		public void inf() { //内部类成员方法
			System.out.println("innerClass y="+y);
		}
		int y=0 ;	//定义内部类成员变量
	}
	
	public innerClass doit() {	//外部类方法，返回值为内部类引用
		in.y=4;	
		System.out.println("OuterClass:doit");
		this.ouf();
		return new innerClass();	// 返回内部类引用
	}
	public static void main(String[] args) {	
		// TODO Auto-generated method stub
		
		OuterClass out=new OuterClass();
		OuterClass.innerClass in =out.doit();
		System.out.println("OuterClass y="+in.y);
		
		/*
		 * 内部类可以访问它的外部类的成员，但内部类的成员只有在内部类的范围之类是可知的，
		 * 不能被外部类使用。
		 * 
		 */
	}

}
